package jschool.modelos;

import javax.swing.table.AbstractTableModel;

import jschool.entidades.Nota;
import jschool.manejadores.ManejadorDeNota;

public class ModeloNota extends AbstractTableModel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String[] encabezado = null;
	private static ModeloNota instancia = null;
	private ManejadorDeNota manejadorDeNota = null;
	private Nota nota = null;

	public ModeloNota() {
		encabezado = new String[] { "Id_Estudiante", "Id_Materia", "eva1" };
		manejadorDeNota = ManejadorDeNota.getInstancia();
	}

	public static ModeloNota getInstancia() {
		if (instancia == null) {
			instancia = new ModeloNota();
		}
		return instancia;
	}

	public String getColumnName(int posicion) {
		return encabezado[posicion];
	}

	@Override
	public int getColumnCount() {

		return encabezado.length;
	}

	@Override
	public int getRowCount() {

		return manejadorDeNota.getNotas().size();
	}

	@Override
	public Object getValueAt(int fila, int col) {
		nota = manejadorDeNota.getNotas().get(fila);
		String retorno = "";
		switch (col) {
		case 0:
			retorno = String.valueOf(nota.getIdEstudiante());

			break;
		case 1:
			retorno = String.valueOf(nota.getIdMateria());
			break;
		case 2:
			retorno = String.valueOf(nota.getEvaluacion1());
			break;

		case 3:
			retorno = String.valueOf(nota.getEvaluacion2());
			break;

		case 4:
			retorno = String.valueOf(nota.getEvaluacion3());
			break;
		case 5:
			retorno = String.valueOf(nota.getEvaluacion4());
			break;
		case 6:
			retorno = String.valueOf(nota.getEvaluacion5());
			break;
		case 7:
			retorno = String.valueOf(nota.getEvaluacion6());
			break;
		case 8:
			retorno = String.valueOf(nota.getEvaluacion7());
			break;
		case 9:
			retorno = String.valueOf(nota.getEvaluacion8());
			break;
		case 10:
			retorno = String.valueOf(nota.getPruebaPeriodo());
			break;
		case 11:
			retorno = String.valueOf(nota.getCalificacionFinPeriodo());
			break;

		case 12:
			retorno = String.valueOf(nota.getPromedioFinal());
			break;
		case 13:
			retorno = String.valueOf(nota.getPruebaCompletiva());
			break;

		case 14:
			retorno = String.valueOf(nota.getPruebaExtraordinaria());
			break;

		}

		return retorno;
	}

	public void setValueAt(Object valor, int fila, int col) {
		nota = manejadorDeNota.getNotas().get(fila);
		switch (col) {

		case 2:
			nota.setEvaluacion1((Integer) valor);
			break;
		case 3:
			nota.setEvaluacion2((Integer) valor);
			break;
		case 4:
			nota.setEvaluacion3((Integer) valor);
			break;
		case 5:
			nota.setEvaluacion4((Integer) valor);
			break;
		case 6:
			nota.setEvaluacion5((Integer) valor);
			break;
		case 7:
			nota.setEvaluacion6((Integer) valor);
			break;
		case 8:
			nota.setEvaluacion7((Integer) valor);
			break;
		case 9:
			nota.setEvaluacion8((Integer) valor);
			break;
		case 10:
			nota.setPruebaPeriodo((Integer) valor);
			break;

		case 11:
			nota.setCalificacionFinPeriodo((Integer) valor);
			break;
		case 12:
			nota.setPromedioFinal((Integer) valor);
			break;
		case 13:
			nota.setPruebaCompletiva((Integer) valor);
			break;
		case 14:
			nota.setPruebaExtraordinaria((Integer) valor);
			break;

		}

	}

}
